perm filename PUPSER.FLO[SS,SYS] blob sn#817605 filedate 1986-05-24 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00004 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	PUP Interrupt processing
C00004 00003	RFC processing (interrupt level)
C00007 00004	ACK processing
C00010 ENDMK
C⊗;
PUP Interrupt processing

	PUPINT:
		  ID≠RII
		------------------------+
					|
		  J=0 (??!?)		|
		----------------------+ |
				      | |
		  INTINS∧JBTIRQ=1     | |
		-------------------+  | |
				   |  | |
		  increment RII	   |  | |
				   |  | |
	PUPIN1:	<------------------+  | |
				      | |
		  INTINS∧JBTIEN=1     | |
		------------------+   | |
				  |   | |
		  cause interrupt |   | |
				  |   | |
	PUPIN2:	<-----------------+---+-|---+
					|   |
		  discard rcv'd packet	|   |
		  send int. reply	|   |
		  return		|   |
					|   |
					|   |
					|   |
	PUPIN3:	<-----------------------+   |
					    |
		  ID=RII-1		    |
		----------------------------+

		  ID=RII+1
		--------------> PUPDSC

		  error
 
RFC processing (interrupt level)

			RFCR=1
	PUPRFC:	-------------------+
				   |
		  RFCW=1	   |
		--------------+	   |
			      |	   |
		error	      |	   |
			      |	   |
	PUPRF1:	<-------------+	   |
				   |
		  RFCS=0 ∨ ID=SID  |
		--------------+	   |
			      |	   |
		error	      |	   |
			      |	   |
	PUPRF2:	<-------------+	   |
				   |
		initialize ID's	   |
		initialize sockets |
				   |
		  Host=-1 (listen) |
		--------------+	   |
			      |	   |
		GENSYM socket |	   |
		initialize SID|	   |
			      |	   |
	PUPRF3:	<-------------+	   |
				   |
		set host	   |
		set RFCR	   |
				   |
		  RFCS=1 (is reply)|
		-------------------|----+
				   |    |
	PUPRF4:	-------------------|----|---+
				   |    |   |
		send reply	   |    |   |
				   |    |   |
		  No routing	   |    |   |
		---------> IROUFA  |    |   |
				   |    |   |
		  Xmit full	   |    |   |
		---------> PUPDSC  |    |   |
				   |    |   |
		return		   |    |   |
				   |    |   |
				   |    |   |
	PUPRF5:	<------------------+    |   |
				        |   |
		  RFCL=0		|   |
		---------> PUPDSC	|   |
				        |   |
	          |		        |   |
		  +---------------------|---+
				        |
				        |
	PUPRF6: <-----------------------+

		stop sending RFCs

		  doing RFC retry?
		-------------------+
				   |
		force other retry  |
		return		   |
				   |
	PUPRF8:	<------------------+

		clear retry
		return

ACK processing

	PUPACK:	

		update timeouts
		initialize to front of transmit queue

	PUPAC2:	<-------------------------------+
						|
		examine next packet		|
						|
		  no packets pending		|
		--------------------------------|-------+
						|	|
		  non-data packet		|	|
		--------------------------------+	|
						|	|
	PUPAC3:					|	|
		  packet more recent		|	|
		--------------------------------|-------+
						|	|
		remove packet from queue	|	|
						|	|
	PUPAC4:					|	|
						|	|
		  not being transmitted		|	|
		----------------------------+	|	|
					    |	|	|
		flag packet for discard	    |	|	|
					    |	|	|
		  |			    |	|	|
		  +-------------------------|---+	|
					    |	|	|
	PUPAC5:	<---------------------------+	|	|
						|	|
		discard data packet		|	|
						|	|
		  |				|	|
		  +-----------------------------+	|
							|
							|
	PUPAC6:	<---------------------------------------+

		save new allocations
		discard ACK packet
		initialize to front of transmit queue

		  transmit queue empty
		----------------------------------------+
							|
	PUPAC7:	<-----------------------------------+	|
						    |	|
		reduce allocation by pending packet |	|
		examine next packet		    |	|
						    |	|
		  more to process		    |	|
		------------------------------------+	|
							|
							|
	PUPAC8:	<---------------------------------------+

		  insufficient allocation
		----------------------------+
					    |
		wake from allocation wait   |
		restart retry routine	    |
					    |
	PUPAC9:	<---------------------------+

		return